package main

import (
	"fmt"
	"sync"
)

//如何解决主死随从的问题 （主协程在子协程结束后自动结束）
var wg sync.WaitGroup

// WaitGroup 提供了三个很有用的函数
/*
Add
Done
Wait
Add 的数量和Done的数量必须相等
*/
func f(i int) {
	defer wg.Done()
	fmt.Println(i)

}
func main() {
	//for i := 0; i < 5; i++ {
	//	wg.Add(1)
	//	go func(n int) {
	//		fmt.Println(n)
	//		wg.Done()
	//	}(i)
	//}
	//wg.Wait()
	wg.Add(5)
	for i := 0; i < 5; i++ {
		go f(i)
	}
	wg.Wait()
}
